/*
 * StrahlentherapiePhysicsList.hh
 *
 *  Created on: Oct 1, 2010
 *      Author: hoba
 */
#ifndef StrahlentherapiePhysicsList_h
#define StrahlentherapiePhysicsList_h 1

#include "G4VModularPhysicsList.hh"
#include "G4EmConfigurator.hh"
#include "globals.hh"

class G4VPhysicsConstructor;
//class StrahlentherapieStepMax;

class StrahlentherapiePhysicsList: public G4VModularPhysicsList
{
public:
	StrahlentherapiePhysicsList();
	~StrahlentherapiePhysicsList();

	void ConstructParticle();

	/**
	 * Setzt die Laenge ab der Teilchen nicht mehr verfolgt werden.
	 * Laenge wird automatisch in teilchenspezifische Energie umgerechnet.
	 */
	void SetCuts();
	void SetCutForGamma(G4double);
	void SetCutForElectron(G4double);
	void SetCutForPositron(G4double);

	void AddPhysicsList(const G4String& name);
	void ConstructProcess();

//	void AddStepMax();
//	StrahlentherapieStepMax* GetStepMaxProcess() {return stepMaxProcess;};
//	void AddPackage(const G4String& name);

private:
	G4EmConfigurator em_config;

	G4double cutForGamma;
	G4double cutForElectron;
	G4double cutForPositron;

	G4bool helIsRegisted;
	G4bool bicIsRegisted;
	G4bool biciIsRegisted;
	G4bool locIonIonInelasticIsRegistered;
	G4bool radioactiveDecayIsRegisted;

	G4String                             emName;
	G4VPhysicsConstructor*               emPhysicsList;
	G4VPhysicsConstructor*               decPhysicsList;
	std::vector<G4VPhysicsConstructor*>  hadronPhys;

//	StrahlentherapieStepMax* stepMaxProcess;
};

#endif // StrahlentherapiePhysicsList_h
